﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Collections.Generic;
using com.creditos.be.liclSolcred;
using liclSolcred.Views;
using com.creditos.be.liclSolcred;
using com.creditos.util.liclUtil;
using com.creditos.be.liclUtil;

public partial class solcred_FormsManEvaluacionProspecto : CreditosPaseBase, IFormsManEvaluacionProspectoView
{
    private liclSolcred.Views.FormsManEvaluacionProspectoPresenter oPresenter = new FormsManEvaluacionProspectoPresenter();
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!this.IsPostBack)
        {
            oPresenter.View = this;
            ProductoBE oProductoBE = new ProductoBE();
            oPresenter.Load(oProductoBE);
            txtFechaSolicitud.Text = DateTime.Now.ToShortDateString();
            UCBarraHerramientas1.btnEnviar.Visible = true;
            UCBarraHerramientas1.btnRegresar.Visible = true;
            Master.TituloModulo = "Evaluación Prospecto";
            if (Request.QueryString["tipo"] == "1")
            {
                pnlAccionistas.Visible = false;
                Master.TituloModulo = "Simulador de Políticas de Crédito";
            }

        }
        oPresenter.View = this;

    }

    protected override void DefineHandlers()
    {
        btnBuscarSol.Click += new ImageClickEventHandler(btnBuscarSol_Click);
        btnBuscarCon.Click += new ImageClickEventHandler(btnBuscarCon_Click);
        btnBuscarLab.Click += new ImageClickEventHandler(btnBuscarLab_Click);
        btnBuscarIntegrante1.Click += new ImageClickEventHandler(btnBuscarIntegrante1_Click);
        btnBuscarIntegrante2.Click += new ImageClickEventHandler(btnBuscarIntegrante2_Click);
        btnBuscarIntegrante3.Click += new ImageClickEventHandler(btnBuscarIntegrante3_Click);
        UCBarraHerramientas1.btnEnviar.Click += new EventHandler(btnEnviar_Click);
        UCBarraHerramientas1.btnNuevo.Click += new EventHandler(btnNuevo_Click);
        UCBarraHerramientas1.btnRegresar.Click += new EventHandler(btnRegresar_Click);
        UCBarraHerramientas1.btnBuroCreditos.Click += new EventHandler(btnBuroCreditos_Click);
    }

    void btnBuscarSol_Click(object sender, ImageClickEventArgs e)
    {
        if (validarCliente())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = int.Parse(ddlDocIdentidadSol.SelectedValue);
            oCliente.NumeroDocumento = txtDocIdentidadSol.Text.Trim();
            oPresenter.ListarCliente(oCliente, 0);
        }
    }

    void btnBuscarCon_Click(object sender, ImageClickEventArgs e)
    {
        if (validarConyuge())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = int.Parse(ddlDocIdentidadCon.SelectedValue);
            oCliente.NumeroDocumento = txtDocIdentidadCon.Text.Trim();
            oPresenter.ListarConyuge(oCliente, 0);
        }
    }

    void btnBuscarLab_Click(object sender, ImageClickEventArgs e)
    {
        if (validarNegocio())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = 5;
            oCliente.NumeroDocumento = txtRUCLab.Text.Trim();
            oPresenter.ListarCliente(oCliente, 1);
        }
    }

    void btnBuscarIntegrante1_Click(object sender, ImageClickEventArgs e)
    {
        if (validarIntegrante1())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = int.Parse(ddlTipoDocumento1.SelectedValue);
            oCliente.NumeroDocumento = txtNumeroDocumento1.Text.Trim();
            oPresenter.ListarIntegrante1(oCliente, 0);
        }
    }

    void btnBuscarIntegrante2_Click(object sender, ImageClickEventArgs e)
    {
        if (validarIntegrante2())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = int.Parse(ddlTipoDocumento2.SelectedValue);
            oCliente.NumeroDocumento = txtNumeroDocumento2.Text.Trim();
            oPresenter.ListarIntegrante2(oCliente, 0);
        }
    }

    void btnBuscarIntegrante3_Click(object sender, ImageClickEventArgs e)
    {
        if (validarIntegrante3())
        {
            ClienteBE oCliente = new ClienteBE();
            oCliente.TipoDocumento = int.Parse(ddlTipoDocumento3.SelectedValue);
            oCliente.NumeroDocumento = txtNumeroDocumento3.Text.Trim();
            oPresenter.ListarIntegrante3(oCliente, 0);
        }
    }

    void btnEnviar_Click(object sender, EventArgs e)
    {
        if (txtDocIdentidadSol.Text == string.Empty) {
            MostrarMensajeError("Debe llenar el número de documento del solicitante");        
        }
        else if (txtApellidoPaternoSol.Text == string.Empty) { 
            MostrarMensajeError("Debe llenar el apellido paterno del solicitante");
        }
        else if (txtApellidoMaternoSol.Text == string.Empty) { 
            MostrarMensajeError("Debe llenar el apellido materno del solicitante");
        }
        else if (txtPrimerNombreSol.Text == string.Empty)
        {
            MostrarMensajeError("Debe llenar el primer nombre del solicitante");
        }
        else
        {
            ProspectoBE oProspecto = new ProspectoBE();
            oProspecto.Accion = 1;
            oProspecto.NroProspecto = int.Parse(lblNumeroSolicitud.Text);
            oProspecto.CodTipoPersona = 1;
            oProspecto.CodProducto = int.Parse(ddlProducto.SelectedValue);
            oProspecto.TipoDocumentoTit = int.Parse(ddlDocIdentidadSol.SelectedValue);
            oProspecto.NroDocumentoTit = txtDocIdentidadSol.Text;
            oProspecto.ApePaternoTit = txtApellidoPaternoSol.Text;
            oProspecto.ApeMaternoTit = txtApellidoMaternoSol.Text;
            oProspecto.Nombre1Tit = txtPrimerNombreSol.Text;
            oProspecto.Nombre2Tit = txtSegundoNombreSol.Text;
            oProspecto.TipoDocumentoCny = int.Parse(ddlDocIdentidadCon.SelectedValue);
            oProspecto.NroDocumentoCny = txtDocIdentidadCon.Text;
            oProspecto.ApePaternoCny = txtApellidoPaternoCon.Text;
            oProspecto.ApeMaternoCny = txtApellidoMaternoCon.Text;
            oProspecto.Nombre1Cny = txtPrimerNombreCon.Text;
            oProspecto.Nombre2Cny = txtSegundoNombreCon.Text;
            oProspecto.NroRUC = txtRUCLab.Text;
            oProspecto.DesRazonSocial = txtRazonSocialLab.Text;

            oProspecto.TipoIntegranteAd1 = int.Parse(ddlTipoIntegrante1.Text);
            oProspecto.TipoDocumentoAd1 = int.Parse(ddlTipoDocumento1.Text);
            oProspecto.NroDocumentoAd1 = txtNumeroDocumento1.Text;
            oProspecto.ApePaternoAd1 = txtApePatIntegrante1.Text;
            oProspecto.ApeMaternoAd1 = txtApeMatIntegrante1.Text;
            oProspecto.Nombre1Ad1 = txtNombre1Integrante1.Text;
            oProspecto.Nombre2Ad1 = txtNombre2Integrante1.Text;

            oProspecto.TipoIntegranteAd2 = int.Parse(ddlTipoIntegrante2.Text);
            oProspecto.TipoDocumentoAd2 = int.Parse(ddlTipoDocumento2.Text);
            oProspecto.NroDocumentoAd2 = txtNumeroDocumento2.Text;
            oProspecto.ApePaternoAd2 = txtApePatIntegrante2.Text;
            oProspecto.ApeMaternoAd2 = txtApeMatIntegrante2.Text;
            oProspecto.Nombre1Ad2 = txtNombre1Integrante2.Text;
            oProspecto.Nombre2Ad2 = txtNombre2Integrante2.Text;

            oProspecto.TipoIntegranteAd3 = int.Parse(ddlTipoIntegrante3.Text);
            oProspecto.TipoDocumentoAd3 = int.Parse(ddlTipoDocumento3.Text);
            oProspecto.NroDocumentoAd3 = txtNumeroDocumento3.Text;
            oProspecto.ApePaternoAd3 = txtApePatIntegrante3.Text;
            oProspecto.ApeMaternoAd3 = txtApeMatIntegrante3.Text;
            oProspecto.Nombre1Ad3 = txtNombre1Integrante3.Text;
            oProspecto.Nombre2Ad3 = txtNombre2Integrante3.Text;

            List<ProspectoBE> lstProspecto = new List<ProspectoBE>();
            lstProspecto = oPresenter.ActualizarProspecto(oProspecto);
            lblNumeroSolicitud.Text = lstProspecto[0].NroProspecto.ToString();

            pnlAccionistas.Visible = false;
            pnlDatos.Enabled = false;
            UCBarraHerramientas1.btnNuevo.Visible = true;
            UCBarraHerramientas1.btnEnviar.Visible = false;
            pnlResultado.Visible = true;
            MostrarMensaje("Registro ingresado exitosamente");
            if (Request.QueryString["tipo"] == null)
            {
                UCBarraHerramientas1.btnBuroCreditos.Visible = true;

            }
        }
    }

    void btnNuevo_Click(object sender, EventArgs e)
    {
        pnlAccionistas.Visible = true;
        pnlResultado.Visible = false;
        pnlDatos.Enabled = true;
        UCBarraHerramientas1.btnNuevo.Visible = false;
        UCBarraHerramientas1.btnEnviar.Visible = true;
        LimpiarDatos();
        if (Request.QueryString["tipo"] == "1") pnlAccionistas.Visible = false;
        else UCBarraHerramientas1.btnBuroCreditos.Visible = false;
    }

    void btnRegresar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../FormsPrincipal.aspx");
    }

    void btnBuroCreditos_Click(object sender, EventArgs e)
    {
        string url = "FormsConCentralRiesgos.aspx?Solicitud=" + lblNumeroSolicitud.Text + "&Origen=" + 2;
        string script = "window.location = '" + url + "';";
        ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
    }

    private bool validarCliente()
    {
        bool strError = true;
        try { int.Parse(ddlDocIdentidadSol.SelectedValue.Trim()); }
        catch (Exception)
        {
            strError = false;
            MostrarMensajeError("Error en Tipo de Documento de Identidad");
        }
        if (txtDocIdentidadSol.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de Documento de Identidad");
        }

        return strError;
    }

    private bool validarConyuge()
    {
        bool strError = true;
        try { int.Parse(ddlDocIdentidadCon.SelectedValue.Trim()); }
        catch (Exception)
        {
            strError = false;
            MostrarMensajeError("Error en Tipo de Documento de Identidad del cónyuge");
        }
        if (txtDocIdentidadCon.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de Documento de Identidad del cónyuge");
        }

        return strError;
    }

    private bool validarNegocio()
    {
        bool strError = true;
        if (txtRUCLab.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de RUC");
        }

        return strError;
    }

    private bool validarIntegrante1()
    {
        bool strError = true;
        try { int.Parse(ddlTipoDocumento1.SelectedValue.Trim()); }
        catch (Exception)
        {
            strError = false;
            MostrarMensajeError("Error en Tipo de Documento de Identidad del Integrante 1");
        }
        if (txtNumeroDocumento1.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de Documento de Identidad del Integrante 1");
        }

        return strError;
    }

    private bool validarIntegrante2()
    {
        bool strError = true;
        try { int.Parse(ddlTipoDocumento2.SelectedValue.Trim()); }
        catch (Exception)
        {
            strError = false;
            MostrarMensajeError("Error en Tipo de Documento de Identidad del Integrante 2");
        }
        if (txtNumeroDocumento2.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de Documento de Identidad del Integrante 2");
        }

        return strError;
    }

    private bool validarIntegrante3()
    {
        bool strError = true;
        try { int.Parse(ddlTipoDocumento3.SelectedValue.Trim()); }
        catch (Exception)
        {
            strError = false;
            MostrarMensajeError("Error en Tipo de Documento de Identidad del Integrante 3");
        }
        if (txtNumeroDocumento3.Text.Trim() == string.Empty)
        {
            strError = false;
            MostrarMensajeError("Error en Número de Documento de Identidad del Integrante 3");
        }

        return strError;
    }

    public void LimpiarDatos() {
        txtApellidoPaternoSol.Text = string.Empty;
        txtApellidoMaternoSol.Text = string.Empty;
        txtPrimerNombreSol.Text = string.Empty;
        txtSegundoNombreSol.Text = string.Empty;

        txtDocIdentidadSol.Text = string.Empty;
        txtApellidoPaternoCon.Text = string.Empty;
        txtApellidoMaternoCon.Text = string.Empty;
        txtPrimerNombreCon.Text = string.Empty;
        txtSegundoNombreCon.Text = string.Empty;
        txtDocIdentidadCon.Text = string.Empty;

        txtRUCLab.Text = string.Empty;
        txtRazonSocialLab.Text = string.Empty;

        txtNumeroDocumento1.Text = string.Empty;
        txtApePatIntegrante1.Text = string.Empty;
        txtApeMatIntegrante1.Text = string.Empty;
        txtNombre1Integrante1.Text = string.Empty;
        txtNombre2Integrante1.Text = string.Empty;

        txtNumeroDocumento2.Text = string.Empty;
        txtApePatIntegrante2.Text = string.Empty;
        txtApeMatIntegrante2.Text = string.Empty;
        txtNombre1Integrante2.Text = string.Empty;
        txtNombre2Integrante2.Text = string.Empty;

        txtNumeroDocumento3.Text = string.Empty;
        txtApePatIntegrante3.Text = string.Empty;
        txtApeMatIntegrante3.Text = string.Empty;
        txtNombre1Integrante3.Text = string.Empty;
        txtNombre2Integrante3.Text = string.Empty;
        lblMensaje.Text = string.Empty;
    }

    public void MostrarMensaje(string strMensaje)
    {        
        lblMensaje.Text = strMensaje;
        lblMensaje.ForeColor = System.Drawing.Color.Blue;
    }

    #region IFormsManEvaluacionProspectoView Members

    public void CargarProductos(List<ProductoBE> lstProductos)
    {
        UIBindable.Bind(ddlProducto, lstProductos, "CodigoProducto", "DescripcionProducto");
    }

    public void MostrarMensajeError(string Mensaje)
    {
        Master.MostrarMensaje(Mensaje, 0);
    }

    public void CargarParametros(List<ParametroBE> lstParametros)
    {
        if (lstParametros.Count > 0)
        {
            switch (lstParametros[0].CodigoTabla)
            {
                case 1:
                    UIBindable.Bind(ddlDocIdentidadSol, lstParametros);                    
                    UIBindable.Bind(ddlDocIdentidadCon, lstParametros);  
                    UIBindable.Bind(ddlTipoDocumento1, lstParametros);  
                    UIBindable.Bind(ddlTipoDocumento2, lstParametros);  
                    UIBindable.Bind(ddlTipoDocumento3, lstParametros);  
                    break;
                case 973:
                    UIBindable.Bind(ddlTipoIntegrante1, lstParametros);
                    UIBindable.Bind(ddlTipoIntegrante2, lstParametros);
                    UIBindable.Bind(ddlTipoIntegrante3, lstParametros);                    
                    break;
            }
        }
    }

    public void CargarCliente(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtApellidoPaternoSol.Text = item.ApellidoPaterno.ToUpper();
                txtApellidoMaternoSol.Text = item.ApellidoMaterno.ToUpper();
                txtPrimerNombreSol.Text = item.Nombre.ToUpper();
                txtSegundoNombreSol.Text = item.SegundoNombre.ToUpper();                                
            }
        }
    }
    public void CargarConyuge(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtApellidoPaternoCon.Text = item.ApellidoPaterno.ToUpper();
                txtApellidoMaternoCon.Text = item.ApellidoMaterno.ToUpper();
                txtPrimerNombreCon.Text = item.Nombre.ToUpper();
                txtSegundoNombreCon.Text = item.SegundoNombre.ToUpper();
            }
        }
    }

    public void CargarNegocio(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtRazonSocialLab.Text = item.RazonSolcial.ToUpper();                
            }
        }
    }

    public void CargarIntegrante1(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtApePatIntegrante1.Text = item.ApellidoPaterno.ToUpper();
                txtApeMatIntegrante1.Text = item.ApellidoMaterno.ToUpper();
                txtNombre1Integrante1.Text = item.Nombre.ToUpper();
                txtNombre2Integrante1.Text = item.SegundoNombre.ToUpper();
            }
        }
    }

    public void CargarIntegrante2(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtApePatIntegrante2.Text = item.ApellidoPaterno.ToUpper();
                txtApeMatIntegrante2.Text = item.ApellidoMaterno.ToUpper();
                txtNombre1Integrante2.Text = item.Nombre.ToUpper();
                txtNombre2Integrante2.Text = item.SegundoNombre.ToUpper();
            }
        }
    }

    public void CargarIntegrante3(List<ClienteBE> lstCliente)
    {
        if (lstCliente.Count > 0)
        {
            foreach (ClienteBE item in lstCliente)
            {
                txtApePatIntegrante3.Text = item.ApellidoPaterno.ToUpper();
                txtApeMatIntegrante3.Text = item.ApellidoMaterno.ToUpper();
                txtNombre1Integrante3.Text = item.Nombre.ToUpper();
                txtNombre2Integrante3.Text = item.SegundoNombre.ToUpper();
            }
        }
    }

    public void CargarProspecto(List<ProspectoBE> lstProspecto)
    {        
        ObtenerImagenResultadoBanco(lstProspecto[0].FlagBanco.ToString());
        ObtenerImagenResultadoBaseNegativa(lstProspecto[0].FlagBaseNegativa.ToString());
        ObtenerImagenResultadoSBS(lstProspecto[0].FlagSBS.ToString());
        ObtenerImagenResultadoBuro(lstProspecto[0].FlagBuro.ToString());

        if (lstProspecto.Count > 0)       
            UIBindable.Bind(gvwResultadoProspecto, lstProspecto);       
    }

    public string ObtenerImagenResultadoBanco(string valor)
    {

        
        switch (valor)
        {
            case "1": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_VERDE;
            case "2": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_AMARILLO;
            case "3": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_ROJO;
            default: return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_DEFAULT;
        }
    }
    public string ObtenerImagenResultadoBaseNegativa(string valor)
    {
        switch (valor)
        {
            case "1": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_VERDE;
            case "2": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_AMARILLO;
            case "3": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_ROJO;
            default: return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_DEFAULT;
        }
    }
    public string ObtenerImagenResultadoSBS(string valor)
    {
        switch (valor)
        {
            case "1": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_VERDE;
            case "2": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_AMARILLO;
            case "3": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_ROJO;
            default: return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_DEFAULT;
        }
    }
    public string ObtenerImagenResultadoBuro(string valor)
    {
        switch (valor)
        {
            case "1": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_VERDE;
            case "2": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_AMARILLO;
            case "3": return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_ROJO;
            default: return com.creditos.util.liclUtil.Utilitario.UrlImagenResultadoProspecto.URLIMAGE_DEFAULT;
        }
    }

    #endregion

}
